/**
 * 有两个循环单链表L1, L2，编写一个函数=将链表L2连接到链表L1之后，
 * 要求连接后的链表仍然保持循环链表形式
 */
#include <stdio.h>
#include <stdlib.h>

#define bool int
#define true !0
#define false 0

//循环链表结构体定义
typedef struct DNode{
	struct DNode* next;		//后继指针
	struct DNode* prior;	//前驱指针
	int data;				//数据域
}DNode, *DoubleList;

bool core(DoubleList &L1, DoubleList &L2)
{
	DNode* p1=L1;	//p1指向链表L1的头结点
	DNode* p2=L2;	//p2指向链表L2的头结点
	
	//寻找链表L1的尾结点
	while(p1->next!=L1) p1=p1->next;
	
	//寻找链表L2的尾结点
	while(p2->next!=L2) p2=p2->next;
	//L1的尾结点next域指向L2的首部, p2的尾结点next域指向L1的首部
	p1->next=L2;
	p2->next=L1;
	return true;
}